1. Field of the Invention
The present invention pertains to a method by which information may be exchanged between computer processes using a container-based exchange medium. More specifically, the present invention relates to an information exchange method whereby the computer processes, rather than exchanging information directly, exchange information by depositing and/or retrieving information in a container.
2. Description of The Related Art
Application programs that execute on today's computing equipment rarely possess all the functionality that is needed for the application program to execute fully. Rather, those application programs rely on external libraries of other programs in order to execute all programs for the functionality that is required. For example, an application program may rely on an external library containing device drivers such as printer drivers or monitor drivers in order to output data, and the application program may rely on the computer operating system, such as DOS, to store and to retrieve information from files. Likewise, the application program may use functionality that is not even present on the computer in which the application program is running; for example, in a network environment, the application program may print information to a printer that is not physically co-located with the computer and which is controlled by an altogether different computer.
Traditionally, the mechanism for passing information between the application program and other programs is through shared memory in which both the application program and the other program are aware of the structure of the information stored in the shared memory. For example, to print information on a printer, the application program stores the print information in a pre-designated block of shared memory, and then signals the print driver that the print information is stored in the shared memory. The print driver, knowing the structure by which the print data has been stored in shared memory, retrieves the print information from shared memory and executes printing processing.
Such a structured information exchange using shared memory has been found to be unsatisfactory. In particular, the shared memory must be reserved at compile time by the compiler and resolved into specific memory addresses at load time by the operating system loading program. Thus, memory which is potentially used only infrequently may be wasted.
Second, both the application program and the other program must have knowledge of the structure of shared memory. For example, if an application program has queried a print driver for the current printer setup and capabilities, the application program must have knowledge of how the printer driver will store that information in memory, for example, fonts first, then paper trays, then collating capabilities, and so on.
Finally, direct information exchange using shared memory is inflexible. Once the structure of shared memory is defined, which normally occurs early on in system design, the structure cannot be changed lest the new structure be incompatible with the old structure. Accordingly, as new system capabilities are provided, for example, upgrading a printer to a printer that includes a stapler, those new capabilities cannot be accessed by the application program because there is no provision in the shared memory area for defining the parameters of the new capability.